#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include<string.h>
#include<stdlib.h>

// 引用 Windows Multimedia API
#pragma comment(lib,"Winmm.lib")

// 游戏画面尺寸
#define High 640 
#define Width 1024

IMAGE img_bk_0;  //开始界面背景
IMAGE img_bk; // 背景图片
IMAGE img_bk_over;  //游戏结束界面
double position_x, position_y; // 飞机位置
double bullet_x, bullet_y; // 子弹位置
double bullet_fy, bullet_fx;   //两侧机翼子弹位置
double bullet_dx, bullet_dy;    //敌机子弹位置
double bullet_dx1, bullet_dy1;    //其他敌机子弹位置
double bullet_boss_x, bullet_boss_y;   //boss飞机的子弹

double enemy_x, enemy_y; // 敌机位置
double enemy_x1, enemy_y1;  //其他敌机位置
double enemy_boss_x, enemy_boss_y;  //boss飞机的位置
IMAGE img_planeNormal1, img_planeNormal2; // 正常飞机图片
IMAGE img_planeExplode1, img_planeExplode2; // 爆炸飞机图片
IMAGE img_bullet1, img_bullet2; // 子弹图片
IMAGE img_enemyPlane1, img_enemyPlane2; // 敌机图片
IMAGE img_boss;        //boss飞机
int isExpolde = 0; // 飞机是否爆炸
int score = 0; // 得分
int EnemyMoveSpeed;     //敌机的移动速度

//起判断作用的全局变量
int game = 0;   //判断是否退出
int Reg = 0;    //判断是否注册过账号(菜单）
int Feed = 0;   //判断是否回馈
int over = 1;   //判断我方是否阵亡
int degree = 0;   //统计游戏次数
int regis = 0;    //判断是否注册过账号

int i_speak = 0;  //累计反馈次数

//定义结构体
struct plan {
	char user_name[6] = { 0 };   //用户名
	char account_number[7] = { 0 };  //账号
	char number[9] = { 0 };   //密码
	char feed[100] = { 0 };   //反馈内容
	int score_look = 0;  //显示历史游戏得分
}My, a[100] = { 0 };

//1.注册账号
void Register()
{
	
	mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
	mciSendString(L"open 点击音效1.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
	mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
	printf("请您设置自己的名称： ");
	scanf("%s", &My.user_name);
	printf("\n请您设置自己的账号： ");
	scanf("%s", &My.account_number);
	printf("\n请您设置自己的密码： ");
	scanf("%s", &My.number);
	Reg = 1;
	regis = 1;
}

//2.游戏说明
void help()
{
	mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
	mciSendString(L"open 点击音效1.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
	mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
	printf("1.本游戏名为《飞机大战》\n");
	printf("2.游戏采用积分制\n");
	printf("3.游戏教程：\n");
	printf("  a.鼠标放在游戏窗口的任意部位\n");
	printf("  b.遇到敌机时便可按下左键发射子弹\n");
	printf("  c.当飞机超过五级时便增加我方飞机的子弹同时敌方飞机也发射子弹\n");
	printf("  d.当我方飞机遇到敌机或者敌机子弹时便阵亡\n");
	printf("end:谢谢观看！\n\n");
	printf("温馨提示：“回车”即可退出！");

	char input;
	int i = 0,j=0;
	input = _getch();
	for (i = 0;; i++)
	{
		if (input == '\r')
		{
			j = 1;
			break;
			
		}
		else
		{
			system("pause");
		}
		if (j == 1)
			break;
	}
}

//3.开始游戏
void start_game()
{
	mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
	mciSendString(L"open 点击音效1.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
	mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
	game = 0;
}

//4.游戏体验反馈及其建议
void feedback()
{
	mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
	mciSendString(L"open 点击音效1.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
	mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
	printf("亲，对我们这款《飞机大战》游戏有什么体验后的评价或者建议尽请留言，我们将非常感谢！\n\n");
	printf("请键入您的美颜金句：");
	
	if (a[i_speak].feed[0] == '\0')
	{
		scanf("%s", &a[i_speak].feed);
		i_speak++;
	}
	else
	{
		scanf("%s", &a[i_speak + 1].feed);
		i_speak++;
	}
	Feed = 1;
}

//5.查看历史游戏得分
void history()
{
	// 先把前面一次的音乐关闭
	mciSendString(L"close fgmusic", NULL, 0, NULL);
	// 打开音乐
	mciSendString(L"open go_time.mp3 alias fgmusic", NULL, 0, NULL);
	// 仅播放一次
	mciSendString(L"play fgmusic", NULL, 0, NULL);
	int i;
	for (i = 1; i <= degree; i++)
	{
		printf("第%d次游戏得分：%d;\n\n", i, a[i].score_look);
	}

	system("pause");
	mciSendString(L"close fgmusic", NULL, 0, NULL);
}

//6.退出
void Esc_out()
{
	mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
	mciSendString(L"open 点击音效1.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
	mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
	game = 6;
}


//7.菜单
void menu()    //菜单
{
	printf("\n-----------------------飞机游戏-----------------------\n\n");
	printf("操作列表:\n\n");
	printf("(1)注册账号   (2)游戏说明             (3)开始游戏\n\n");
	printf("(4)反馈       (5)查看历史游戏记录     (6)退出游戏\n");

	printf("------------------------------------------------------\n");
	if (Reg == 1)
	{
		printf("用户名：%s\n\n", My.user_name);
		printf("我的账号：%s\n\n", My.account_number);
		printf("我的密码：******\n\n\n\n\n");
	}

	if (Feed == 1)
	{
		int j;
		for (j = 0; a[j].feed[0] != '\0'; j++)
			printf("我的反馈%d：%s\n\n", j + 1, a[j].feed);
	}

}


//8.数据初始化
void startup()
{
	initgraph(Width, High);
	loadimage(&img_bk_0, L"begin_1.jpg");
	loadimage(&img_bk, L"timg.jpg");
	loadimage(&img_bk_over, L"game_over.jpg");
	loadimage(&img_boss, L"boss.jpg");
	loadimage(&img_planeNormal1, L"planeNormal_1.jpg");
	loadimage(&img_planeNormal2, L"planeNormal_2.jpg");
	loadimage(&img_bullet1, L"bullet1.jpg");
	loadimage(&img_bullet2, L"bullet2.jpg");
	loadimage(&img_enemyPlane1, L"enemyPlane1.jpg");
	loadimage(&img_enemyPlane2, L"enemyPlane2.jpg");
	loadimage(&img_planeExplode1, L"planeExplode_1.jpg");
	loadimage(&img_planeExplode2, L"planeExplode_2.jpg");

	position_x = Width * 0.5;
	position_y = High * 0.7;
	bullet_x = position_x;
	bullet_y = -85;
	enemy_x = Width * 0.5;
	enemy_y = 10;

	BeginBatchDraw();
}

//9.开始界面，需要在画面任意部位按下鼠标左键才能开始游戏
void begin()
{

	putimage(0, 0, &img_bk_0);
	FlushBatchDraw();

	mciSendString(L"open wz_begin.mp3 alias bkmusic", NULL, 0, NULL);//打开开始音乐
	mciSendString(L"play bkmusic", NULL, 0, NULL); // 仅播放一次

	int i;
	int n = 0;

	//定义 鼠标消息
	MOUSEMSG m; 
	//这个函数用于检测当前是否有鼠标消息
	while (MouseHit())
	{
		//当没有在开始界面上按下鼠标左键，一直显示开始界面背景
		for (i = 0;; i++)  
		{
			m = GetMouseMsg();
			// 按下鼠标左键
			if (m.uMsg == WM_LBUTTONDOWN)
			{
				mciSendString(L"close bkmusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open begin_game.mp3 alias bkmusic", NULL, 0, NULL);//打开开始音效
				mciSendString(L"play bkmusic", NULL, 0, NULL); // 仅播放一次
				n = 1;
				break;
			}
			if (n == 1)
				break;
		}
	}
	mciSendString(L"close bkmusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
	mciSendString(L"open WZ_five.mp3 alias bkmusic", NULL, 0, NULL);//打开背景音乐
	mciSendString(L"play bkmusic repeat", NULL, 0, NULL);  // 循环播放
}

//10.显示
void show()
{ 
	// 显示背景	
	putimage(0, 0, &img_bk);	
	if (isExpolde == 0)
	{
		// 显示正常飞机	
		putimage((int)(position_x - 50), (int)(position_y - 60), &img_planeNormal1, NOTSRCERASE); 
		putimage((int)(position_x - 50), (int)(position_y - 60), &img_planeNormal2, SRCINVERT);

		// 显示子弹	
		putimage((int)(bullet_x - 7), (int)(bullet_y), &img_bullet1, NOTSRCERASE); 
		putimage((int)(bullet_x - 7), (int)bullet_y, &img_bullet2, SRCINVERT);

		//超过五级显示两侧导弹
		if (score > 5)          
		{
			// 显示右侧子弹	
			putimage((int)(bullet_fx + 23), (int)(bullet_fy), &img_bullet1, NOTSRCERASE); 
			putimage((int)(bullet_fx + 23), (int)bullet_fy, &img_bullet2, SRCINVERT);

			// 显示左侧子弹	
			putimage((int)(bullet_fx - 39), (int)(bullet_fy), &img_bullet1, NOTSRCERASE); 
			putimage((int)(bullet_fx - 39), (int)bullet_fy, &img_bullet2, SRCINVERT);

			// 显示第二个敌机	
			putimage((int)enemy_x1, (int)enemy_y1, &img_enemyPlane1, NOTSRCERASE); 
			putimage((int)enemy_x1, (int)enemy_y1, &img_enemyPlane2, SRCINVERT);

		}

		// 显示敌机
		putimage((int)enemy_x, (int)enemy_y, &img_enemyPlane1, NOTSRCERASE);	
		putimage((int)enemy_x, (int)enemy_y, &img_enemyPlane2, SRCINVERT);

		if (score > 5)
		{
			// 显示敌机子弹	
			putimage((int)(bullet_dx + 42), (int)(bullet_dy + 80), &img_bullet1, NOTSRCERASE); 
			putimage((int)(bullet_dx + 42), (int)(bullet_dy + 80), &img_bullet2, SRCINVERT);

			// 显示敌机子弹	
			putimage((int)(bullet_dx1 + 42), (int)(bullet_dy1 + 80), &img_bullet1, NOTSRCERASE); 
			putimage((int)(bullet_dx1 + 42), (int)(bullet_dy1 + 80), &img_bullet2, SRCINVERT);
		}

		//当分数超过10时，出现boss飞机
		if (score>10&&score<20)      
		{
			putimage((int)enemy_boss_x, (int)enemy_boss_y, &img_boss);
			// 显示boss子弹	
			putimage((int)(bullet_boss_x + 42), (int)(bullet_boss_y + 80), &img_bullet1, NOTSRCERASE); 
			putimage((int)(bullet_boss_x + 42), (int)(bullet_boss_y + 80), &img_bullet2, SRCINVERT);
		}
	}
	else
	{
		// 显示爆炸飞机	
		putimage((int)(position_x - 50), (int)(position_y - 60), &img_planeExplode1, NOTSRCERASE);
		putimage((int)(position_x - 50), (int)(position_y - 60), &img_planeExplode2, SRCINVERT);
		

		//被敌机击中时暂停背景音乐
		mciSendString(L"close bkmusic", NULL, 0, NULL);
		system("cls");
	}
	outtextxy((int)(Width * 0.48), (int)(High * 0.95), L"得分：");
	char s[5];
	sprintf_s(s, "%d", score);
	outtextxy((int)(Width * 0.55), (int)(High * 0.95), L"s");
	FlushBatchDraw();
	Sleep(2);

}

//11.与用户输入无关的更新
void updateWithoutInput()
{
	if (isExpolde == 0)
	{
		// 我方飞机子弹的移动
		if (bullet_y > -25)      
		{
			bullet_y = bullet_y - 2;
		}

		//超过五级就两侧发射导弹
		if (bullet_fy > -25 && score > 5)   
		{
			bullet_fy = bullet_fy - 2;
		}

		//第一个敌机与其子弹的移动
		if (enemy_y < (int)(High - 25))      
		{
			enemy_y = enemy_y + 0.5;
			bullet_dy = bullet_dy + 1;
		}

		//第二个敌机与其子弹的移动
		if (enemy_y1 < (int)(High - 25))        
		{
			enemy_y1 = enemy_y1 + 0.5;
			bullet_dy1 = bullet_dy1 + 1;
		}

		//boss与其子弹的移动
		if (enemy_boss_y < (int)(High - 25))    
		{
			enemy_boss_y = enemy_boss_y + 0.5;
			bullet_boss_y = bullet_boss_y + 1;
		}
		else
		{
			enemy_y = 10;
			enemy_y1 = 10;
			enemy_boss_y = 10;
		}

		// 子弹击中敌机
		if (fabs(bullet_x - enemy_x) + fabs(bullet_y - enemy_y) < 80)  
		{
			enemy_x = rand() % Width;
			enemy_y = -40;
			bullet_y = -85;
			bullet_fy = -85;

			bullet_dx = enemy_x;
			bullet_dy = enemy_y;

			score++;
			if (score == 1)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open one.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 2)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open two.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 3)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open three.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 4)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1four.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 5)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1five.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 6)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1six.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score >= 7)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1seven.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score >= 10)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 连续击杀3次.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
		}

		// 子弹击中其他敌机
		if ((fabs(bullet_x - enemy_x1) + fabs(bullet_y - enemy_y1) < 80)) 
		{
			enemy_x1 = rand() % Width;
			enemy_y1 = -40;
			bullet_y = -85;
			bullet_fy = -85;

			bullet_dx1 = enemy_x1;
			bullet_dy1 = enemy_y1;

			score++;
			if (score == 1)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open one.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 2)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open two.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 3)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open three.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 4)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1four.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 5)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1five.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score == 6)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1six.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score >= 7)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 1seven.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
			if (score >= 10)
			{
				mciSendString(L"close gemusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 连续击杀3次.mp3 alias gemusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play gemusic", NULL, 0, NULL); // 仅播放一次
			}
		}

		//子弹击中boss
		if ((fabs(bullet_x - enemy_boss_x) + fabs(bullet_y - enemy_boss_y) < 80))  
		{
			enemy_boss_x = rand() % Width;
			enemy_boss_y = -40;
			bullet_y = -85;
			bullet_fy = -85;

			bullet_boss_x = enemy_boss_x;
			bullet_boss_y = enemy_boss_y;

			score = score + 2;

			mciSendString(L"close exmusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
			mciSendString(L"open boss.mp3 alias exmusic", NULL, 0, NULL); // 打开音乐
			mciSendString(L"play exmusic", NULL, 0, NULL); // 仅播放一次	
		}

		// 敌机击中我们
		if (fabs(position_x - enemy_x) + fabs(position_y - enemy_y) < 150 || (fabs(position_x - enemy_x1) + fabs(position_y - enemy_y1)) < 150)  
		{
			isExpolde=1;
			over = 0;
			if (isExpolde == 1)
			{
				mciSendString(L"close exmusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
				mciSendString(L"open 自己被杀2.mp3 alias exmusic", NULL, 0, NULL); // 打开音乐
				mciSendString(L"play exmusic", NULL, 0, NULL); // 仅播放一次	
				mciSendString(L"close bkmusic", NULL, 0, NULL);//被敌机击中时暂停背景音乐
				
			}
			for (int i = 0; i < 10000000; i++);
			putimage(0, 0, &img_bk_over);
		}

		if (fabs(bullet_dx - position_x) + fabs(bullet_dy - position_y) < 150 && score > 5)
		{
			isExpolde = 1;
			over = 0;
			mciSendString(L"close exmusic", NULL, 0, NULL); // 先把前面一次的音乐关闭
			mciSendString(L"open 自己被杀2.mp3 alias exmusic", NULL, 0, NULL); // 打开音乐
			mciSendString(L"play exmusic", NULL, 0, NULL); // 仅播放一次	

			for (int i = 0; i < 10000000; i++);
			putimage(0, 0, &img_bk_over);
		}
	}
} 

//12.与用户输入有关的更新
void updateWithInput()
{
	if (isExpolde == 0)
	{
		// 定义鼠标消息
		MOUSEMSG m;		
		//这个函数用于检测当前是否有鼠标消息
		while (MouseHit())  
		{
			m = GetMouseMsg();
			if (m.uMsg == WM_MOUSEMOVE)
			{
				// 飞机的位置等于鼠标所在的位置
				position_x = m.x;
				position_y = m.y;
			}

			else if (m.uMsg == WM_LBUTTONDOWN)
			{
				// 按下鼠标左键，发射子弹
				bullet_x = position_x;
				bullet_fx = position_x;
				bullet_fy = position_y;
				bullet_y = position_y - 85;
				// 先把前面一次的音乐关闭
				mciSendString(L"close fgmusic", NULL, 0, NULL); 
				// 打开音乐
				mciSendString(L"open f_gun.mp3 alias fgmusic", NULL, 0, NULL); 
				// 仅播放一次
				mciSendString(L"play fgmusic", NULL, 0, NULL);
			}
		}
	}
}

//13.游戏结束、后续处理
void gameover()
{
	EndBatchDraw();
	_getch();
	closegraph();
	mciSendString(L"close bkmusic", NULL, 0, NULL);
	over = 1;
	isExpolde = 0;
	a[degree].score_look = score;  //获得本次游戏得分
	score = 0;
	
	system("cls");
	menu();
}

//14.开始游戏
void begin_game()  
{
	degree++;
	startup();  // 数据初始化
	begin();
	while (over)  //  游戏循环执行
	{
		show();  // 显示画面
		updateWithoutInput();  // 与用户输入无关的更新
		updateWithInput();     // 与用户输入有关的更新
	}
	gameover();     // 游戏结束、后续处理
}

//15.主函数
int main()
{
	int n = 0;
	//菜单
	menu();
	do {
		printf("\n请输入操作: ");
		scanf_s("%d", &n);
		switch (n)
		{
		case 1:
			Register();  //注册账号
			 //延迟时间，让用户看清相关信息 
			for (int i = 0; i < 1000000000; i++); 
			system("cls");
			menu();
			break;
		case 2:
			help();  //游戏说明
			//延迟时间，让用户看清相关信息 
			for (int i = 0; i < 1000000000; i++);  
			system("cls");
			menu();
			break;
		case 3:
			if (regis == 0)
			{
				printf("为了保证您的信息安全，请先注册账号，谢谢！\n");
				system("pause");
				system("cls");
				menu();
				break;
			}
			else
			{
				start_game();   //开始游戏
			 //延迟时间，让用户看清相关信息 
				for (int i = 0; i < 1000000000; i++);
				if (game == 0)
					begin_game();
				break;
			}
			break;
			
		case 4:
			feedback();     //反馈
			//延迟时间，让用户看清相关信息 
			for (int i = 0; i < 1000000000; i++); 
			system("cls");
			menu();
			break;

		case 5:
			history();
			//延迟时间，让用户看清相关信息 
			for (int i = 0; i < 1000000000; i++);
			system("cls");
			menu();
			break;
		case 6:
			Esc_out();    //退出游戏
			 //延迟时间，让用户看清相关信息 
			for (int i = 0; i < 1000000000; i++); 
			break;
		}
	} while (game==0);

	return 0;
}
